GWTをおすすめする/しない について
概要
GWTについて、自分が考えている事を纏めておく。
・どんな人にお勧めするか
・どんな人にお勧めしないか
を主眼にする。
自分の目、判断基準について
チーム戦を前提に機構やルールを組み上げる仕事をしてるので、
自分の主義主張に関して、
「えっそれ個人なら問題にならなくね?」というコトがありがち。
それでも、自分にとっては、数日前の自分ですら他人(覚えてない自信がある)なので、
・如何に暗黙のルールを自明にできるか
・如何にルール遵守を自動化できるか
・どうしても手でやらなきゃならないとして、如何にルール自体の数を減らせるか
というのが、自分にとって必要な理だったりします。
判断基準として共有までに。
前提、GWTとはなんだったのか
Googleが作った、WebToolKit
略してGWT。
.javaファイルに書かれたjava+jsソースを、jsに変換する。
単純に書くと、
Javaを使って、ブラウザで動くアプリのコーディングができる
なんか気を利かせて、各ブラウザ向けのコードを吐いてくれたりする。
圧倒的な利点
・Javaの言語的なルールをもってして、JSを構造的に記述できる
→妄信的にコーディングルールを定めてクソみたいなJSコードになるよりは、
Javaというカチカチした言語のルールの中で記述する方がマシ。兆倍マシ。
が、これはGWTだけの利点ではなく、他の言語→JSを出力する仕掛け、でも実現できる。
LLVM to JSとか、ClojureScriptとか。
Dartはまだ仕様カチッとしてないしGoogleだから気にしない。
上記 恩恵として、大規模なWebクライアントを書く事が可能。あくまで可能性だけど。
ブラウザでやった方が良い事、ネイティブでやった方が良い事、サーバでやった方が良い事、の3つがあり、
そのうちの一つが強大になって行くのを担保できる、という利がある。
はっきり言ってJSでのブラウザ巨大アプリは、作らないでいいなら作らないでいい方が本当に良い。
でも、って場合、Javaのルールがある程度の助けになる。素のJSよりマシ。
・JavaでJSのテストが書け、ブラウザで実行できる
→JSで書いたライブラリを内包して、薄いラッパー書いてテストをJavaで書いて自動化、なんてことができる。
圧倒的な損点
・手法としてまどろっこしい
→実際まどろっこしい。変換行程は省けないし、変換アクセラレーションも限界がある。
でも、CI組んじゃえば割とどうでも良かったりする。
・Javaちゃんやっぱりちょっと、、ご免っていうかめんどくさい
→ハンドラとか書いてると挫けそうになる。メッセージング無いし。
・Googleプロダクトにありがちだけど、未来が不明
→が、すでに基礎を行うには十分なリソースがそろっていると言える。
JSでHTML5の機構を書いて、Javaでラップ、テストを書いて作って使う、なんてことも可能。
→ぶっちゃけ未来なんてどうでも良い、と言える。
いっそ手放してくれたほうが、、、ほら、Waveみたいにさ、、
(ツールとプロダクトを一緒くたにすんなっつう反論はご尤も。)
GWTの現状
HTML4のブラウザアプリならそのまま使用OK。
HTML5の機能に対応するモジュールとかは無い、が、自力で足せる
リリース予定などのスケジュールが未定、そもナニしたいのか、リリース方針が未定
以上をふまえた上で、
自分がGWTをお勧めする人
初学でない +
Java書けて +
JSで大規模なものを作るのに苦を感じる +
テストをする事に重要性を感じて +
大穴で、JSの損点が他の言語のルールを使う事でどのように補完されるか見たい +
な、人。
余談だけど、GWTが吐き出すJSが読める、ていう能力の必要はねーと思う。
バグったらJavaのコードをまず疑うべく。
どうせJSのコードを手で直す機会は絶対に訪れない訳だし。
ただし、現在12/05/19 16:09:54 ですけど、
1年後には誰も使わなくなってる言語になってると思います。
理由は、「他の ToJSCompile言語なりツール」が出て来るから。っていうかもう出てきてるんだけどさ。
なので、GWTは、「JavaをJSに変換する唯一の手段」ではなく、あくまで「JavaをJSに変換する1手段」でしかありません。
そこんとこよろしく。
別の選択肢があるなら別のを学ぶと良いと思うよ。
自分がGWTをお勧めしない人
初学 or 初学でない +
Java書けない or Javaキライ +
JS好き or JSで大規模なものを作るのに苦を感じない +
別にテスト無くても大丈夫! だぜな +
日本語でおk +
な、人。
上記に該当する人は、根本的にお勧めしません。
初学ならこんな難しいものやるより、Coffeeとかのほうにしましょう。
JavaキライならGWTはJavaなのでBye! です。
JS好きならJS書いててください。コールバックコールバック。
別にテスト→そのコード、ずっと動くと良いね! JSでね!! ククク
日本語でおk→GoogleがGWTの死霊を1.6くらいで他言語化放置してるので、やめた方がいいよ。
以上。
In Other Words
GWT is already completed. and Dead. RIP.
please choose the other one.